import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

public class TestRubricaContatto {
	RubricaContatti rubrica;

	@Before
	public void setUp() {
		rubrica = new RubricaContatti("Test", 200);
	}
	
	@Test(expected = FormatException.class)
	public void testFormatExcNome() throws FormatException{
		rubrica.aggiungi("Vallone","Vanessa","XXX5555","");
		rubrica.aggiungi("Vallo7ne","Vanessa","XXX5555","");
	}
	
	
	@Rule
	public ExpectedException exception = ExpectedException.none();
	
	@Test(expected = FormatException.class)
	public void testFormatExcCognome() throws FormatException{
		//exception.expect(FormatException.class);
		//exception.expectMessage(containsString("Cognome errato"));
		rubrica.aggiungi("Vallone","Vanessa","5555","");
		rubrica.aggiungi("Vallo7ne","Vanessa","5555","");
	}
	

	@Test
	public void testInserimentoCercaRimuovi() {
		assertEquals(0, rubrica.getDim());
		assertEquals(200, rubrica.getMaxDim());
		try {
			assertTrue(rubrica.aggiungi("Garrone","Andrea","XXX5555","")) ;
			assertTrue(rubrica.aggiungi("Vallone","Vanessa","XXX5555", ""));
			assertEquals(2, rubrica.getDim());
			assertTrue(rubrica.aggiungi("Daneo","Lorenzo","XXX8877",""));
			assertTrue(rubrica.aggiungi("Gallo","Massimiliano","YYYY5555",""));
			rubrica.aggiungi("Daneo","Lorenzo","YYY8877", "");
			assertEquals(5, rubrica.getDim());
			assertFalse(rubrica.aggiungi("Gallo","Massimiliano","YYYY5555", ""));
			assertEquals(5, rubrica.getDim());
			assertEquals(1, (rubrica.cerca("ga","ma")).size());
			assertEquals(0, (rubrica.cercaCaseSensitive("Ga","ma")).size());
			rubrica.rimuovi(rubrica.cerca("ga",""));
			assertEquals(3, rubrica.getDim());
			assertEquals(0, (rubrica.cerca("ga","")).size());
			rubrica.aggiungi("Gallo","Massimiliano","XXXX5555","");
			assertEquals(1, (rubrica.cerca("ga","")).size());
		} 
		catch (FormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
